Skip to content

KAFKA-19717: fix(connect/transforms): preserve fractional digits in InsertHeader literal values#22609

Open
wilmerdooley wants to merge 1 commit into
apache:trunkfrom
wilmerdooley:oss/kafka-19717
Open

KAFKA-19717: fix(connect/transforms): preserve fractional digits in InsertHeader literal values#22609
wilmerdooley wants to merge 1 commit into
apache:trunkfrom
wilmerdooley:oss/kafka-19717

Conversation

@wilmerdooley

Copy link
Copy Markdown

What

The InsertHeader SMT was dropping the fractional part of literal values when the parsed schema resolved to an integral type. For example, configuring value.literal: "2.0" produced a header with value 2 instead of 2.0. The configure method now detects this case and rewrites the schema and value to FLOAT32, FLOAT64, or Decimal so the original literal is preserved.

The behavior change is localized to connect/transforms/src/main/java/org/apache/kafka/connect/transforms/InsertHeader.java. When Values.parseString returns an integral-typed SchemaAndValue and the raw configured string contains a decimal point, the literal is re-encoded using BigDecimal, falling back to Decimal for values outside the range of float/double. All other inputs keep the previous behavior.

Why

Testing

Added InsertHeaderTest.insertionWithFloatHeader, which configures the SMT with the literal "2.0" and asserts that the resulting header carries a FLOAT32 value of 2.0f while preserving any pre-existing headers on the record. Existing tests continue to cover the integral and string literal paths, so non-numeric and integer literals are unchanged.


Delete this text and replace it with a detailed description of your change. The
PR title and body will become the squashed commit message.

If you would like to tag individuals, add some commentary, upload images, or
include other supplemental information that should not be part of the eventual
commit message, please use a separate comment.

If applicable, please include a summary of the testing strategy (including
rationale) for the proposed change. Unit and/or integration tests are expected
for any behavior change and system tests should be considered for larger
changes.

JIRA: https://issues.apache.org/jira/browse/KAFKA-19717

…s a number

Signed-off-by: wilmerdooley <wilmerdooley1@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

connect small Small PRs triage PRs from the community

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant